package chemtools_logica.LN.SFBean;

import chemtools_logica.BDL.IR.BDL_SFDetalleformulaRemote;

import chemtools_logica.Beans.DetalleformulaBean;

import chemtools_logica.Beans.FormulaBean;
import chemtools_logica.Beans.TipoinsumoBean;

import chemtools_logica.Beans.TipoproductoBean;

import chemtools_logica.Entidades.Contenedores;
import chemtools_logica.Entidades.Detalleformula;

import chemtools_logica.Entidades.Formula;

import chemtools_logica.Entidades.Tipoinsumo;

import chemtools_logica.Entidades.Tipoproducto;

import chemtools_logica.LN.IL.LN_SFDetalleformulaLocal;
import chemtools_logica.LN.IR.LN_SFDetalleformulaRemote;

import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import javax.ejb.EJB;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless(name = "LN_SFDetalleformula", mappedName = "map-LN_SFDetalleformula")
public class LN_SFDetalleformulaBean implements LN_SFDetalleformulaRemote, LN_SFDetalleformulaLocal {
    @Resource
    SessionContext sessionContext;
    @PersistenceContext(unitName = "Chemtools_Logica")
    private EntityManager em;


    @EJB
    BDL_SFDetalleformulaRemote bDL_SFDetalleformulaRemote;

    public LN_SFDetalleformulaBean() {
    }

    @EJB
    private BDL_SFDetalleformulaRemote bDL_SFDetalleFormulaRemote;
    


    public void registrarDetalleFormula(DetalleformulaBean nuevoDetalleFormulaBean) {
        bDL_SFDetalleformulaRemote.mergeDetalleformula(beanforEntidad(nuevoDetalleFormulaBean));
    }

    public List<DetalleformulaBean> buscaxIdFormula(int idFormula) {
        return listEntidadforBean(bDL_SFDetalleformulaRemote.buscaxIdFormula(idFormula));
    }
    
    public void borraxIdFormula(DetalleformulaBean detalleformula){
            bDL_SFDetalleformulaRemote.removeDetalleformula(beanforEntidad(detalleformula));
        }
    
    private List<DetalleformulaBean> listEntidadforBean(List<Detalleformula> listEntidad) {
        List<DetalleformulaBean> listaBean = new ArrayList<DetalleformulaBean>();
        DetalleformulaBean bean;
        FormulaBean beanF;
        TipoinsumoBean beanTI;
        TipoproductoBean beanTP;

        for (Detalleformula entidad : listEntidad) {
            bean = new DetalleformulaBean();
            
            beanF = new FormulaBean();
            beanF.setIdFormula(entidad.getFormula().getIdFormula());
            
            beanTI = new TipoinsumoBean();
            beanTI.setIdTipoInsumo(entidad.getTipoinsumo().getIdTipoInsumo());
            beanTI.setDescripcion(entidad.getTipoinsumo().getDescripcion());
            
            beanTP = new TipoproductoBean();
            beanTP.setIdTipoProducto(entidad.getTipoproducto().getIdTipoProducto());
            
            bean.setCantidad_Insumo(entidad.getCantidad_Insumo());
            bean.setCantidad_Producto(entidad.getCantidad_Producto());
            bean.setFormula(beanF);
            bean.setTipoinsumo(beanTI);
            bean.setTipoproducto(beanTP);
            listaBean.add(bean);
        }

        return listaBean;
    }

    private Detalleformula beanforEntidad(DetalleformulaBean nuevoDetalleFormulaBean) {
        Detalleformula entidad = new Detalleformula();

        Formula formula = new Formula();
        formula.setIdFormula(nuevoDetalleFormulaBean.getFormula().getIdFormula());
        formula.setApellido_Creador(nuevoDetalleFormulaBean.getFormula().getApellido_Creador());
        System.out.print("HOLA QUE HACE CONTIDAD DEL apell "+formula.getApellido_Creador());
        formula.setNombre_Creador(nuevoDetalleFormulaBean.getFormula().getNombre_Creador());
        formula.setDescripcion(nuevoDetalleFormulaBean.getFormula().getDescripcion());
        formula.setEstado(nuevoDetalleFormulaBean.getFormula().getEstado());
        formula.setFecha_Creacion(nuevoDetalleFormulaBean.getFormula().getFecha_Creacion());

        Tipoinsumo tipoinsumo = new Tipoinsumo();
        tipoinsumo.setIdTipoInsumo(nuevoDetalleFormulaBean.getTipoinsumo().getIdTipoInsumo());

        Tipoproducto tipoproducto = new Tipoproducto();
        tipoproducto.setIdTipoProducto(nuevoDetalleFormulaBean.getTipoproducto().getIdTipoProducto());

        entidad.setCantidad_Insumo(Integer.parseInt(nuevoDetalleFormulaBean.getTipoinsumo().getCantidadInsumo()));
        entidad.setCantidad_Producto(Integer.parseInt(nuevoDetalleFormulaBean.getTipoinsumo().getCantidadProducto()));
        
        entidad.setFormula(formula);
        entidad.setTipoinsumo(tipoinsumo);
        entidad.setTipoproducto(tipoproducto);
        return entidad;
    }
    
    public boolean tieneFormula(int idTipoProduco){
        boolean tOF = bDL_SFDetalleFormulaRemote.hasFormula(idTipoProduco);
        return tOF;
    }
    
    public boolean productoTieneFormulaActiva(int idTipoProduco){
       return bDL_SFDetalleFormulaRemote.productoTieneFormulaActiva(idTipoProduco);
    }
    
}
